package org.bluedream.core.module.sys.config.service;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.map.HashedMap;
import org.bluedream.comm.utils.EmptyUtil;
import org.bluedream.core.module.base.OrgBaseServiceImpl;
import org.bluedream.core.module.sys.config.dao.ConfigDao;
import org.bluedream.core.module.sys.config.entity.Config;
import org.bluedream.core.utils.UserUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import java.io.Serializable;
import java.util.Map;

@Service
@DS("master")
@Slf4j
public class ConfigService extends OrgBaseServiceImpl<ConfigDao, Config> implements IService<Config> {
    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Override
    public Config getById(Serializable id) {
        return EmptyUtil.isEmpty(id)?new Config():super.getById(id);
    }

    /**
     * 2021.06.24 修改查询条件 eq 变更为 like
     * @param entity
     * @param args
     * @return
     */
    public IPage<Config> findPage(Config entity, String... args) {
        Map<String , Object> search = new HashedMap();
        if (EmptyUtil.isNoEmpty(entity.getConfigName())
                || EmptyUtil.isNoEmpty(entity.getConfigKey())
                || EmptyUtil.isNoEmpty(entity.getConfigValue())
                || EmptyUtil.isNoEmpty(entity.getOrgCode())
        ){
            if (EmptyUtil.isNoEmpty(entity.getConfigName())){
                search.put("CONFIG_NAME" , entity.getConfigName());
            }
            if (EmptyUtil.isNoEmpty(entity.getConfigKey())){
                search.put("CONFIG_KEY" , entity.getConfigKey());
            }
            if (EmptyUtil.isNoEmpty(entity.getConfigValue())){
                search.put("CONFIG_VALUE" , entity.getConfigValue());
            }
            if (EmptyUtil.isNoEmpty(entity.getOrgCode())){
                search.put("ORG_CODE;eq" , entity.getOrgCode());
            }
        }
        return super.findPage(entity , search , args);
    }
}
